Computer databases that store data electronically are commonly used for retrieving data more efficiently and easily than paper file storage methods. Database systems can be used to produce reports organizing the data for output to the user in clear formats. For example, an employee database can contain data on employees such as their respective names, salaries, departments, managers, and employee IDs. This information can be periodically retrieved and organized into reports, such as a report on all employees having salaries in a given salary range. The report could specify, for those employees having a salary in a given range, their names, employee IDs and departments. Similarly, a report can be produced on every employee in a given department, containing their names and employee ID.
One type of computer software database management system for logically organizing the data stored in the database is a relational database management system (RDBMS). In a RDBMS, the data is logically stored in tables having columns corresponding to attributes of the data (such as employee ID, salary, and department number) and rows corresponding to the records of grouped attributes (such as the attributes for a given employee). Query languages such as the structured query language (SQL) are used to query the database and extract particular portions of the data, such as a list of particular attributes of employees having a certain range of salary, as described above.
In order to generate the report, a database user has to be familiar with the commands and syntax of the query language used by a given database. This can require special training and expertise to write queries to generate reports. The user, interested in creating a report, is side-tracked first into learning this special language to find the data for the report. For example, there is a need to know the logic used by the query language, which can be counter-intuitive. If a user were to try to determine all employees who live in Oklahoma and Kentucky, the user would intuitively want to generate a query command asking for users in "Oklahoma and Kentucky." However, there is a difference between the `and` as used in common English language and the logical AND operator used in query languages. In order to determine all employees who live in two different states, a logical OR has to be used to identify those employees that are residents of the first state or the second state. The AND operator would be used when trying to identify employees that are residents of both Oklahoma and Kentucky.
When working on a report layout and desired content, the database user often needs to make modifications to the report after reviewing the generated report. However, in most query languages, a simple modification to a report content or layout can require completely rewriting a new query statement. This query statement has to be run against the entire database to produce the updated report to be reviewed. This requires a lot of time from the user and from the computer system in which the database system is stored and the RDBMS is run. It would be better to be able to allow the database user to directly manipulate the report and immediately see the results of the alterations.
There are a number of query interfaces that simplify the query generation process, such as Query-By-Example (QBE) as described by M. M. Zloof, "Query-by-Example: a data base language", IBM System Journal, Vol 16, No. 4, 1977, pp. 324 ff. There are query building interfaces which simplify query writing by taking advantage of workstation based graphical user interfaces. While the current graphical interfaces make it easier to formulate queries, there is still a need for making the process even easier. Also, there is a need to improve the process of generating reports by allowing a user to formulate a query and design the report format at the same time. Particularly since people who work in a business environment are familiar with reports and since the goal in querying a database is to produce a report, it would be desirable to provide a graphical query interface which allows for direct manipulation of a report and for immediate feedback of how the database report format would appear.